package com.lingjtx.common.core.model.iot;

public class MqttRequest {

    private String action;

    private String productId;

    private String mac;

    private String content;

    private Integer qos = 1;

    /**
     *等级 | 名称 | 含义说明 | 是否可能丢消息 | 是否可能重复
     * 0 | At most once（最多一次） | 消息最多传输一次，不确认、不重发，可能会丢失。 | ✅ 是 | ❌ 否
     * 1 | At least once（至少一次） | 消息至少传输一次，可能会重复（接收方需幂等处理），客户端需确认（PUBACK）。 | ❌ 否 | ✅ 是
     * 2 | Exactly once（只有一次） | 消息传输一次且仅一次，最安全，最重的开销（四阶段握手：PUB, PUBREC, PUBREL, PUBCOMP）。 | ❌ 否 | ❌ 否
     *
     */
    // QoS 0：适合对丢失不敏感的场景，如温度传感器频繁上报；
    // QoS 1：大多数业务使用的默认，推荐（可靠且性能好）；
    // QoS 2：对可靠性要求极高的场景（比如交易、命令），但性能开销大，慎用

    public String getAction() {
        return action;
    }

    public void setAction(String action) {
        this.action = action;
    }

    public String getProductId() {
        return productId;
    }

    public void setProductId(String productId) {
        this.productId = productId;
    }

    public String getMac() {
        return mac;
    }

    public void setMac(String mac) {
        this.mac = mac;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Integer getQos() {
        return qos;
    }

    public void setQos(Integer qos) {
        this.qos = qos;
    }

    public String getTopic(){
        return String.format(action, productId, mac);
    }
}
